home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
041-050
/
amok41
/
spiele
/
mastermind
/
txt
/
benutzereingabe.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
4KB
|
161 lines
(*********************************************************************
*
* :Program. EingabeModul für BESTENLISTE
* :Author. Hans Schafft
* :Address. Landfriedstraße 1A - Hinterhaus
* :Address. 6900 Heidelberg
* :Phone. 06221 - 22416
* :Version. 1.3
* :Date. 6/1990
* :Copyright. PD
* :Language. Modula-II
* :Translator. M2Amiga
* :Contents.
*
*********************************************************************)
(***************************************************************)
(* Das Modul überschreibt einen String mit der BenutzerEingabe *)
(***************************************************************)
IMPLEMENTATION MODULE BenutzerEingabe;
FROM Arts IMPORT Assert;
FROM SYSTEM IMPORT ADDRESS, LONGSET, ADR;
FROM Graphics IMPORT jam2, jam1, SetAPen, RectFill,ScrollRaster,
ClipBlit,WaitTOF;
FROM Str IMPORT Concat,Copy;
FROM Exec IMPORT WaitPort,ReplyMsg,GetMsg;
FROM Intuition IMPORT strGadget,ActivationFlagSet,Border,Gadget,AddGadget,
GadgetPtr,IntuiMessagePtr, IDCMPFlags, IDCMPFlagSet,
GadgetFlagSet,IntuiText,RemoveGadget,ActivateGadget,
ActivationFlags, WindowPtr,RefreshGadgets,StringInfo;
(***************************************************************)
PROCEDURE Eingabe(wiPtr : WindowPtr; VAR name : ARRAY OF CHAR);
CONST
GadBreite = 160;
GadHoehe = 12;
XPos = 130;
YPos = 490;
VAR
NameGad : Gadget;
NameGadBorder : Border;
NameGadPairs : ARRAY [1..10] OF INTEGER;
NameStrInfo : StringInfo;
itext : IntuiText;
ok : BOOLEAN;
buffer : ARRAY [0..21] OF CHAR;
bufPtr : ADDRESS;
pos : INTEGER;
hilfen,y : INTEGER;
versuche,x : INTEGER;
msgPtr : IntuiMessagePtr;
class : IDCMPFlagSet;
gadPtr : GadgetPtr;
BEGIN
FOR pos := 0 TO 21 DO
buffer[pos] := 0C;
END;
bufPtr := ADR(buffer[0]);
(* Koordinaten für den Rand der Gadget Box *)
NameGadPairs[1] := 0; NameGadPairs[2] := 0;
NameGadPairs[3] := GadBreite+1; NameGadPairs[4] := 0;
NameGadPairs[5] := GadBreite+1; NameGadPairs[6] := GadHoehe+1;
NameGadPairs[7] := 0; NameGadPairs[8] := GadHoehe+1;
NameGadPairs[9] := 0; NameGadPairs[10] := 0;
WITH itext DO
leftEdge := 0; topEdge := -12;
frontPen := 1; backPen := 0;
drawMode := jam1; nextText := NIL;
iTextFont := NIL;
iText := ADR("BITTE NAME EINGEBEN");
END;
WITH NameGadBorder DO
leftEdge := -1; topEdge := -1;
frontPen := 3; backPen := 2;
drawMode := jam2; count := 5;
xy := ADR(NameGadPairs); nextBorder := NIL;
END;
WITH NameStrInfo DO
buffer := bufPtr;
undoBuffer := NIL;
bufferPos := 0;
maxChars := 20;
dispPos := 0;
undoPos := 0;
numChars := 20;
dispCount := 0;
cLeft := 0;
cTop := 0;
layerPtr := NIL;
longInt := 0;
altKeyMap := NIL;
END;
WITH NameGad DO
leftEdge := XPos;
topEdge := YPos;
width := GadBreite;
height := GadHoehe;
flags := GadgetFlagSet{};
activation := ActivationFlagSet{relVerify};
gadgetType := strGadget;
gadgetRender := ADR(NameGadBorder);
gadgetText := ADR(itext);
mutualExclude := LONGSET{};
nextGadget := NIL;
selectRender := NIL;
specialInfo := ADR(NameStrInfo);
userData := NIL;
gadgetID := 200;
END;
pos := AddGadget(wiPtr,ADR(NameGad),0);
RefreshGadgets(ADR(NameGad),wiPtr,NIL);
ok := ActivateGadget(ADR(NameGad),wiPtr,NIL);
Assert(ok,ADR("Gadget konnte nicht aktiviert werden"));
REPEAT
WaitPort(wiPtr^.userPort);
LOOP
msgPtr := GetMsg(wiPtr^.userPort);
IF msgPtr = NIL THEN EXIT END;
class := msgPtr^.class;
gadPtr:= msgPtr^.iAddress;
ReplyMsg(msgPtr);
IF (gadPtr^.gadgetID = 200) THEN
ok := TRUE;
EXIT;
ELSE
ok := FALSE;
END;
END; (* LOOP *)
UNTIL ok;
pos := RemoveGadget(wiPtr,ADR(NameGad));
FOR x := 30 TO 190 DO
ClipBlit(wiPtr^.rPort,XPos-2,YPos-14,wiPtr^.rPort,
XPos-(x DIV 2),YPos-14-x,GadBreite+4,GadHoehe+16,0C0H);
END;
Concat(buffer,0C);
Copy(name,buffer);
END Eingabe;
(***************************************************************)
(***************************************************************)
BEGIN
END BenutzerEingabe.